// 点击事件集
import { ElMessage } from 'element-plus'
export default function useClickEvents() {
    const clickEvents = {
        'link': [ // 页面
            {
                'value': 'inner-link',
                'label': '页面'
            },
            {
                'value': 'plugin-link',
                'label': '页面'
            },
            {
                'value': 'outer-link',
                'label': '页面'
            }
        ],
        'function': [ // 功能
            {
                'value': 'call',
                'label': '拨打电话',
                'icon': 'icon-phone-call',
                'addData': { // 添加的数据
                    'action': 'call',
                    'call-phone-num': ''
                },
                'checkFun': data => { // 检验函数
                    let state = true
                    if (!data['call-phone-num']) {
                        state = false
                        ElMessage({
                            message: '电话号码不能为空',
                            type: 'warning'
                        })
                    }
                    return state
                }
            },
            {
                'value': 'copy',
                'label': '复制',
                'icon': 'icon-copy',
                'addData': {
                    'action': 'copy',
                    'copy-content': ''
                },
                'checkFun': data => {
                    let state = true
                    if (!data['copy-content']) {
                        state = false
                        ElMessage({
                            message: '复制内容不能为空',
                            type: 'warning'
                        })
                    }
                    return state
                }
            },
            {
                'value': 'add-contact',
                'label': '通讯录',
                'icon': 'icon-address-book',
                'addData': {
                    'action': 'add-contact',
                    'add-contact-first-name': '', // 名字
                    'add-contact-mobile-phone-number': '', // 手机号
                    'add-contact-organization': '' // 公司名
                },
                'checkFun': data => {
                    let state = true
                    if (!data['add-contact-first-name']) {
                        state = false
                        ElMessage({
                            message: '通讯录名称不能为空',
                            type: 'warning'
                        })
                    } else if (!data['add-contact-mobile-phone-number']) {
                        state = false
                        ElMessage({
                            message: '通讯录手机号不能为空',
                            type: 'warning'
                        })
                    }
                    return state
                }
            },
            {
                'value': 'turn-to-xcx',
                'label': '跳转小程序',
                'icon': 'icon-jump',
                'addData': {
                    'action': 'turn-to-xcx',
                    'xcx-id': '', // ???
                    'xcx-appid': '', // appId
                    'xcx-page-url': '' // 页面路径
                },
                'checkFun': data => {
                    let state = true
                    if (!data['xcx-id'] || !data['xcx-appid']) {
                        state = false
                        ElMessage({
                            message: '未绑定跳转小程序',
                            type: 'warning'
                        })
                    }
                    return state
                }
            },
            {
                'value': 'wifi',
                'label': 'WiFi',
                'icon': 'icon-wifi',
                'addData': {
                    'action': 'wifi',
                    'wifi-name': '', // 名称
                    'wifi-password': '', // 密码
                    'wifi-address': '' // MAC地址 (如: 34:80:B3:28:AD:3E)
                },
                'checkFun': data => {
                    let state = true
                    if (!data['wifi-name']) {
                        state = false
                        ElMessage({
                            message: 'WiFi名称不能为空',
                            type: 'warning'
                        })
                    } else if (!data['wifi-password']) {
                        state = false
                        ElMessage({
                            message: 'WiFi密码不能为空',
                            type: 'warning'
                        })
                    } else if (!data['wifi-address']) {
                        state = false
                        ElMessage({
                            message: 'WiFi MAC地址不能为空',
                            type: 'warning'
                        })
                    }
                    return state
                }
            },
            {
                'value': 'top',
                'label': '回到顶部',
                'icon': 'icon-top',
                'addData': {
                    'action': 'top'
                }
            },
            {
                'value': 'sidebar-control',
                'label': '侧边栏控制',
                'icon': 'icon-sidebar',
                'addData': {
                    'action': 'sidebar-control',
                    'sidebarControl': {
                        'sidebarId': '', // 侧边栏控件 id
                        'action': 'show' // 显示show/隐藏hide
                    }
                },
                'checkFun': data => {
                    let state = true
                    if (!data['sidebarControl']['sidebarId']) {
                        state = false
                        ElMessage({
                            message: '未绑定侧边栏',
                            type: 'warning'
                        })
                    }
                    return state
                }
            },
            {
                'value': 'popup-window-control',
                'label': '弹窗控制',
                'icon': 'icon-popup',
                'addData': {
                    'action': 'popup-window-control',
                    'windowControl': {
                        'popupWindowId': '', // 弹窗控件 id
                        'action': 'show' // 显示show/隐藏hide
                    }
                },
                'checkFun': data => {
                    let state = true
                    if (!data['windowControl']['popupWindowId']) {
                        state = false
                        ElMessage({
                            message: '未绑定弹窗',
                            type: 'warning'
                        })
                    }
                    return state
                }
            },
            {
                'value': 'share',
                'label': '分享好友',
                'icon': 'icon-share',
                'addData': {
                    'action': 'share',
                    'shareImage': '', // 分享图片
                    'desc': '' // 分享描述
                },
                'checkFun': data => {
                    let state = true
                    if (!data['desc']) {
                        state = false
                        ElMessage({
                            message: '分享描述不能为空',
                            type: 'warning'
                        })
                    }
                    return state
                }
            },
            {
                'value': 'page-share',
                'label': '分享朋友圈',
                'icon': 'icon-moment',
                'addData': {
                    'action': 'page-share',
                    'pageShareImgUrl': '', // 图片
                    'pageShareCustomText': '' // 自定义文字
                },
                'checkFun': data => {
                    let state = true
                    if (!data['pageShareCustomText']) {
                        state = false
                        ElMessage({
                            message: '自定义文字不能为空',
                            type: 'warning'
                        })
                    }
                    return state
                }
            },
            {
                'value': 'action-custom',
                'label': '自定义事件',
                'icon': 'icon-code',
                'addData': {
                    'action': 'action-custom',
                    'action-custom-content': ''
                },
                'checkFun': data => {
                    let state = true
                    if (!data['action-custom-content']) {
                        state = false
                        ElMessage({
                            message: '事件内容不能为空',
                            type: 'warning'
                        })
                    }
                    return state
                }
            },
            {
                'value': 'contact',
                'label': '客服',
                'icon': 'icon-service',
                'addData': {
                    'action': 'contact'
                }
            },
            {
                'value': 'view-control',
                'label': '视图控制',
                'icon': 'icon-view',
                'addData': {
                    'action': 'view-control',
                    'viewControl': [
                        {
                            'viewId': '', // 视图控件 id
                            'action': '' // 显示show/隐藏hide/切换toggle
                        }
                    ]
                },
                'checkFun': data => {
                    let state = true
                    if (data['viewControl'].length == 0) {
                        state = false
                        ElMessage({
                            message: '未添加视图控制事件',
                            type: 'warning'
                        })
                    } else if (data['viewControl'].length > 0) {
                        if (!data['viewControl'].every(item => { return !!item.viewId && !!item.action })) {
                            state = false
                            ElMessage({
                                message: '目标元素或执行动作不能为空',
                                type: 'warning'
                            })
                        }
                    }
                    return state
                }
            },
            {
                'value': 'preview-picture',
                'label': '预览大图',
                'icon': 'icon-enlarge',
                'addData': {
                    'action': 'preview-picture'
                }
            },
            {
                'value': 'turn-to-form-generator',
                'label': '跳转表单',
                'icon': 'icon-jump',
                'addData': {
                    'action': 'turn-to-form-generator',
                    'form-gen-id': '',
                    'form-gen-action-type': ''
                },
                'checkFun': data => {
                    if (!data['form-gen-id']) {
                        ElMessage({
                            message: '未绑定表单数据来源',
                            type: 'warning'
                        })
                        return false
                    }
                    if (!data['form-gen-action-type']) {
                        ElMessage({
                            message: '未选择表单场景',
                            type: 'warning'
                        })
                        return false
                    }
                    if (data['form-gen-action-type'] === 'update') {
                        if (!data['form-gen-data-id']) {
                            ElMessage({
                                message: '表单数据标识不能为空',
                                type: 'warning'
                            })
                            return false
                        }
                    }
                    return true
                }
            },
            {
                'value': 'turn-to-xcx-page-url',
                'label': '跳转小程序页面',
                'icon': 'icon-jump',
                'addData': {
                    'action': 'turn-to-xcx-page-url',
                    'xcx-page-url': ''
                },
                'checkFun': data => {
                    let state = true
                    if (!data['xcx-page-url']) {
                        state = false
                        ElMessage({
                            message: '请输入跳转的页面路径',
                            type: 'warning'
                        })
                    }
                    return state
                }
            },
            {
                'value': 'turn-to-h5',
                'label': '跳转H5',
                'icon': 'icon-fx-link',
                'addData': {
                    'action': 'turn-to-h5',
                    'turn-to-h5-url': ''
                },
                'checkFun': data => {
                    let state = true
                    if (!data['turn-to-h5-url']) {
                        state = false
                        ElMessage({
                            message: '请输入跳转链接',
                            type: 'warning'
                        })
                    }
                    return state
                }
            },
            {
                'value': 'request-subscribe-message',
                'label': '发送订阅消息',
                'icon': 'icon-fx-subscribe-message',
                'addData': {
                    'action': 'request-subscribe-message',
                    'template-ids': ''
                },
                'checkFun': data => {
                    let state = true
                    if (!data['template-ids']) {
                        state = false
                        ElMessage({
                            message: '未选择订阅消息',
                            type: 'warning'
                        })
                    }
                    return state
                }
            },
            {
                'value': 'show-modal',
                'label': '显示弹窗',
                'icon': 'icon-modal',
                'addData': {
                    'action': 'show-modal',
                    'showModalConfig': { // 弹窗配置
                        'title': '', // 标题
                        'content': '', // 内容
                        'showCancel': true, // 是否显示取消按钮
                        'cancelText': '取消', // 取消按钮的文字
                        'confirmText': '确定', // 确定按钮的文字
                        'confirm': {
                            'events': [] // 确认后事件
                        },
                        'cancel': {
                            'events': [] // 取消后事件
                        }
                    }
                },
                'checkFun': data => {
                    let state = true
                    return state
                }
            }
            // {
            //     'value': 'open-camera',
            //     'label': '拍照',
            //     'icon': 'icon-paizhao-xianxing',
            //     'addData': {
            //         'action': 'open-camera'
            //     }
            // },
            // {
            //     'value': 'refresh-list',
            //     'label': '刷新列表',
            //     'icon': 'icon-youzhuan-',
            //     'addData': {
            //         'action': 'refresh-list',
            //         'index_segment': '', // 索引字段
            //         'index_value': '', // 索引内容
            //         'refresh_object': '' // 对象 (如: 动态列表)
            //     }
            // },
            // {
            //     'value': 'franchisee-enter',
            //     'label': '多商家入驻',
            //     'icon': 'icon-shangjiarenzheng',
            //     'addData': {
            //         'action': 'franchisee-enter'
            //     }
            // },
            // {
            //     'value': 'goods-scan-code',
            //     'label': '扫码购',
            //     'icon': 'icon-saoma',
            //     'addData': {
            //         'action': 'goods-scan-code'
            //     }
            // },
            // {
            //     'value': 'goods-foot-print',
            //     'label': '足迹',
            //     'icon': '',
            //     'addData': {
            //         'action': 'goods-foot-print'
            //     }
            // },
            // {
            //     'value': 'goods-favorites',
            //     'label': '收藏',
            //     'icon': 'icon-shoucang',
            //     'addData': {
            //         'action': 'goods-favorites'
            //     }
            // }
        ]
    }

    // 清除所有点击事件的相关属性名
    const deleteClickEvent = eventData => {
        const findAction = clickEvents.function.find(item => item.value === eventData.action)
        if (!!findAction) {
            Object.keys(findAction.addData).forEach(key => {
                delete eventData[key]
            })
        }
        eventData.action = ''
        eventData.options = []
        eventData['inner-page-link'] = ''
    }

    return {
        clickEvents,
        deleteClickEvent
    }
}